From 2b1dfa10a9ef57dea8f5b1945605f3edaefc593e Mon Sep 17 00:00:00 2001 From: Magnus Manske Date: Thu, 29 Dec 2005 10:21:20 +0000 Subject: [PATCH] moving stuff from index.php to includes/Wiki.php --- includes/Wiki.php | 204 ++++++++++++++++++++++++++++++++++++++++++++++ index.php | 158 ++--------------------------------- 2 files changed, 213 insertions(+), 149 deletions(-) create mode 100644 includes/Wiki.php diff --git a/includes/Wiki.php b/includes/Wiki.php new file mode 100644 index 0000000000..517a901782 --- /dev/null +++ b/includes/Wiki.php @@ -0,0 +1,204 @@ +mSearch ) && $this->mSearch !== '' ) { + require_once( 'includes/SpecialSearch.php' ); + $wgTitle = Title::makeTitle( NS_SPECIAL, 'Search' ); + wfSpecialSearch(); + } else if( !$wgTitle or $wgTitle->getDBkey() == '' ) { + $wgTitle = Title::newFromText( wfMsgForContent( 'badtitle' ) ); + $wgOut->errorpage( 'badtitle', 'badtitletext' ); + } else if ( $wgTitle->getInterwiki() != '' ) { + if( $rdfrom = $wgRequest->getVal( 'rdfrom' ) ) { + $url = $wgTitle->getFullURL( 'rdfrom=' . urlencode( $rdfrom ) ); + } else { + $url = $wgTitle->getFullURL(); + } + # Check for a redirect loop + if ( !preg_match( '/^' . preg_quote( $wgServer, '/' ) . '/', $url ) && $wgTitle->isLocal() ) { + $wgOut->redirect( $url ); + } else { + $wgTitle = Title::newFromText( wfMsgForContent( 'badtitle' ) ); + $wgOut->errorpage( 'badtitle', 'badtitletext' ); + } + } else if ( ( $action == 'view' ) && + (!isset( $_GET['title'] ) || $wgTitle->getPrefixedDBKey() != $_GET['title'] ) && + !count( array_diff( array_keys( $_GET ), array( 'action', 'title' ) ) ) ) + { + /* redirect to canonical url, make it a 301 to allow caching */ + $wgOut->setSquidMaxage( 1200 ); + $wgOut->redirect( $wgTitle->getFullURL(), '301'); + } else if ( NS_SPECIAL == $wgTitle->getNamespace() ) { + # actions that need to be made when we have a special pages + SpecialPage::executePath( $wgTitle ); + } else { + if ( NS_MEDIA == $wgTitle->getNamespace() ) { + $wgTitle = Title::makeTitle( NS_IMAGE, $wgTitle->getDBkey() ); + } + + $ns = $wgTitle->getNamespace(); + + // Namespace might change when using redirects + if($action == 'view' && !$wgRequest->getVal( 'oldid' ) ) { + $wgArticle = new Article( $wgTitle ); + $rTitle = Title::newFromRedirect( $wgArticle->fetchContent() ); + if($rTitle) { + # Reload from the page pointed to later + $wgArticle->mContentLoaded = false; + $ns = $rTitle->getNamespace(); + } + } + + // Categories and images are handled by a different class + if ( $ns == NS_IMAGE ) { + unset($wgArticle); + require_once( 'includes/ImagePage.php' ); + $wgArticle = new ImagePage( $wgTitle ); + } elseif ( $wgUseCategoryMagic && $ns == NS_CATEGORY ) { + unset($wgArticle); + require_once( 'includes/CategoryPage.php' ); + $wgArticle = new CategoryPage( $wgTitle ); + } + + if ( in_array( $action, $wgDisabledActions ) ) { + $wgOut->errorpage( 'nosuchaction', 'nosuchactiontext' ); + } else { + $act = 'act_' . $action ; + if ( method_exists ( $this , $act ) ) { + $this->$act ( $action ) ; + } else { + $this->action_unknown ( $action ) ; + } + } + } + + wfProfileOut( 'main-action' ); + } + +#____________________________________________________________________________________ +#Action methods + + function act_view ( $action ) { + global $wgOut , $wgSquidMaxage , $wgArticle ; + $wgOut->setSquidMaxage( $wgSquidMaxage ); + $wgArticle->view(); + } + + function act_print ( $action ) { + global $wgArticle ; + $wgArticle->view () ; + } + + function act_dublincore ( $action ) { + global $wgArticle , $wgEnableDublinCoreRdf ; + if( !$wgEnableDublinCoreRdf ) { + wfHttpError( 403, 'Forbidden', wfMsg( 'nodublincore' ) ); + } else { + require_once( 'includes/Metadata.php' ); + wfDublinCoreRdf( $wgArticle ); + } + } + + function act_creativecommons ( $action ) { + global $wgArticle , $wgEnableCreativeCommonsRdf ; + if( !$wgEnableCreativeCommonsRdf ) { + wfHttpError( 403, 'Forbidden', wfMsg('nocreativecommons') ); + } else { + require_once( 'includes/Metadata.php' ); + wfCreativeCommonsRdf( $wgArticle ); + } + } + + function act_credits ( $action ) { + global $wgArticle ; + require_once( 'includes/Credits.php' ); + showCreditsPage( $wgArticle ); + } + + function act_submit ( $action ) { + global $wgCommandLineMode , $wgRequest ; + if( !$wgCommandLineMode && !$wgRequest->checkSessionCookie() ) { + # Send a cookie so anons get talk message notifications + User::SetupSession(); + } + $this->act_edit ( $action ) ; + } + + function act_edit ( $action ) { + global $wgRequest , $wgUseExternalEditor , $wgUser , $wgArticle ; + $internal = $wgRequest->getVal( 'internaledit' ); + $external = $wgRequest->getVal( 'externaledit' ); + $section = $wgRequest->getVal( 'section' ); + $oldid = $wgRequest->getVal( 'oldid' ); + if(!$wgUseExternalEditor || $action=='submit' || $internal || + $section || $oldid || (!$wgUser->getOption('externaleditor') && !$external)) { + require_once( 'includes/EditPage.php' ); + $editor = new EditPage( $wgArticle ); + $editor->submit(); + } elseif($wgUseExternalEditor && ($external || $wgUser->getOption('externaleditor'))) { + require_once( 'includes/ExternalEdit.php' ); + $mode = $wgRequest->getVal( 'mode' ); + $extedit = new ExternalEdit( $wgArticle, $mode ); + $extedit->edit(); + } + } + + function act_history ( $action ) { + global $wgTitle , $wgArticle , $wgSquidMaxage ; + if ($_SERVER['REQUEST_URI'] == $wgTitle->getInternalURL('action=history')) { + $wgOut->setSquidMaxage( $wgSquidMaxage ); + } + require_once( 'includes/PageHistory.php' ); + $history = new PageHistory( $wgArticle ); + $history->history(); + } + + function act_raw ( $action ) { + global $wgArticle ; + require_once( 'includes/RawPage.php' ); + $raw = new RawPage( $wgArticle ); + $raw->view(); + } + + + function action_unknown ( $action ) { + global $wgArticle , $wgOut ; + if (wfRunHooks('UnknownAction', array($action, $wgArticle))) { + $wgOut->errorpage( 'nosuchaction', 'nosuchactiontext' ); + } + } + + + function act_watch ( $action ) { $this->article_action ( $action ) ; } + function act_unwatch ( $action ) { $this->article_action ( $action ) ; } + function act_delete ( $action ) { $this->article_action ( $action ) ; } + function act_revert ( $action ) { $this->article_action ( $action ) ; } + function act_rollback ( $action ) { $this->article_action ( $action ) ; } + function act_protect ( $action ) { $this->article_action ( $action ) ; } + function act_unprotect ( $action ) { $this->article_action ( $action ) ; } + function act_info ( $action ) { $this->article_action ( $action ) ; } + function act_markpatrolled ( $action ) { $this->article_action ( $action ) ; } + function act_validate ( $action ) { $this->article_action ( $action ) ; } + function act_render ( $action ) { $this->article_action ( $action ) ; } + function act_deletetrackback ( $action ) { $this->article_action ( $action ) ; } + function act_purge ( $action ) { $this->article_action ( $action ) ; } + + function article_action ( $action ) { + global $wgArticle ; + $wgArticle->$action() ; + } + + +} ; # end of class MediaWikiType + +?> + diff --git a/index.php b/index.php index 360f04873c..8fff434468 100644 --- a/index.php +++ b/index.php @@ -67,6 +67,12 @@ require_once( 'includes/Setup.php' ); wfProfileIn( 'main-misc-setup' ); OutputPage::setEncodings(); # Not really used yet + +# The wiki action class +require_once ( "includes/Wiki.php" ) ; +$wgTheWiki = new MediaWikiType ; + + # Query string fields $action = $wgRequest->getVal( 'action', 'view' ); $title = $wgRequest->getVal( 'title' ); @@ -110,157 +116,11 @@ if ( !is_null( $wgTitle ) && !$wgTitle->userCanRead() ) { exit; } -wfProfileIn( 'main-action' ); - -if( !$wgDisableInternalSearch && !is_null( $search ) && $search !== '' ) { - require_once( 'includes/SpecialSearch.php' ); - $wgTitle = Title::makeTitle( NS_SPECIAL, 'Search' ); - wfSpecialSearch(); -} else if( !$wgTitle or $wgTitle->getDBkey() == '' ) { - $wgTitle = Title::newFromText( wfMsgForContent( 'badtitle' ) ); - $wgOut->errorpage( 'badtitle', 'badtitletext' ); -} else if ( $wgTitle->getInterwiki() != '' ) { - if( $rdfrom = $wgRequest->getVal( 'rdfrom' ) ) { - $url = $wgTitle->getFullURL( 'rdfrom=' . urlencode( $rdfrom ) ); - } else { - $url = $wgTitle->getFullURL(); - } - # Check for a redirect loop - if ( !preg_match( '/^' . preg_quote( $wgServer, '/' ) . '/', $url ) && $wgTitle->isLocal() ) { - $wgOut->redirect( $url ); - } else { - $wgTitle = Title::newFromText( wfMsgForContent( 'badtitle' ) ); - $wgOut->errorpage( 'badtitle', 'badtitletext' ); - } -} else if ( ( $action == 'view' ) && - (!isset( $_GET['title'] ) || $wgTitle->getPrefixedDBKey() != $_GET['title'] ) && - !count( array_diff( array_keys( $_GET ), array( 'action', 'title' ) ) ) ) -{ - /* redirect to canonical url, make it a 301 to allow caching */ - $wgOut->setSquidMaxage( 1200 ); - $wgOut->redirect( $wgTitle->getFullURL(), '301'); -} else if ( NS_SPECIAL == $wgTitle->getNamespace() ) { - # actions that need to be made when we have a special pages - SpecialPage::executePath( $wgTitle ); -} else { - if ( NS_MEDIA == $wgTitle->getNamespace() ) { - $wgTitle = Title::makeTitle( NS_IMAGE, $wgTitle->getDBkey() ); - } - $ns = $wgTitle->getNamespace(); +$wgTheWiki->mSearch = $search ; +$wgTheWiki->main_action () ; +# $search = $wgTheWiki->mSearch ; # Not needed - // Namespace might change when using redirects - if($action == 'view' && !$wgRequest->getVal( 'oldid' ) ) { - $wgArticle = new Article( $wgTitle ); - $rTitle = Title::newFromRedirect( $wgArticle->fetchContent() ); - if($rTitle) { - # Reload from the page pointed to later - $wgArticle->mContentLoaded = false; - $ns = $rTitle->getNamespace(); - } - } - - // Categories and images are handled by a different class - if ( $ns == NS_IMAGE ) { - unset($wgArticle); - require_once( 'includes/ImagePage.php' ); - $wgArticle = new ImagePage( $wgTitle ); - } elseif ( $wgUseCategoryMagic && $ns == NS_CATEGORY ) { - unset($wgArticle); - require_once( 'includes/CategoryPage.php' ); - $wgArticle = new CategoryPage( $wgTitle ); - } - - if ( in_array( $action, $wgDisabledActions ) ) { - $wgOut->errorpage( 'nosuchaction', 'nosuchactiontext' ); - } else { - switch( $action ) { - case 'view': - $wgOut->setSquidMaxage( $wgSquidMaxage ); - $wgArticle->view(); - break; - case 'watch': - case 'unwatch': - case 'delete': - case 'revert': - case 'rollback': - case 'protect': - case 'unprotect': - case 'info': - case 'markpatrolled': - case 'validate': - case 'render': - case 'deletetrackback': - case 'purge': - $wgArticle->$action(); - break; - case 'print': - $wgArticle->view(); - break; - case 'dublincore': - if( !$wgEnableDublinCoreRdf ) { - wfHttpError( 403, 'Forbidden', wfMsg( 'nodublincore' ) ); - } else { - require_once( 'includes/Metadata.php' ); - wfDublinCoreRdf( $wgArticle ); - } - break; - case 'creativecommons': - if( !$wgEnableCreativeCommonsRdf ) { - wfHttpError( 403, 'Forbidden', wfMsg('nocreativecommons') ); - } else { - require_once( 'includes/Metadata.php' ); - wfCreativeCommonsRdf( $wgArticle ); - } - break; - case 'credits': - require_once( 'includes/Credits.php' ); - showCreditsPage( $wgArticle ); - break; - case 'submit': - if( !$wgCommandLineMode && !$wgRequest->checkSessionCookie() ) { - # Send a cookie so anons get talk message notifications - User::SetupSession(); - } - # Continue... - case 'edit': - $internal = $wgRequest->getVal( 'internaledit' ); - $external = $wgRequest->getVal( 'externaledit' ); - $section = $wgRequest->getVal( 'section' ); - $oldid = $wgRequest->getVal( 'oldid' ); - if(!$wgUseExternalEditor || $action=='submit' || $internal || - $section || $oldid || (!$wgUser->getOption('externaleditor') && !$external)) { - require_once( 'includes/EditPage.php' ); - $editor = new EditPage( $wgArticle ); - $editor->submit(); - } elseif($wgUseExternalEditor && ($external || $wgUser->getOption('externaleditor'))) { - require_once( 'includes/ExternalEdit.php' ); - $mode = $wgRequest->getVal( 'mode' ); - $extedit = new ExternalEdit( $wgArticle, $mode ); - $extedit->edit(); - } - break; - case 'history': - if ($_SERVER['REQUEST_URI'] == $wgTitle->getInternalURL('action=history')) { - $wgOut->setSquidMaxage( $wgSquidMaxage ); - } - require_once( 'includes/PageHistory.php' ); - $history = new PageHistory( $wgArticle ); - $history->history(); - break; - case 'raw': - require_once( 'includes/RawPage.php' ); - $raw = new RawPage( $wgArticle ); - $raw->view(); - break; - default: - if (wfRunHooks('UnknownAction', array($action, $wgArticle))) { - $wgOut->errorpage( 'nosuchaction', 'nosuchactiontext' ); - } - } - } -} -wfProfileOut( 'main-action' ); # Deferred updates aren't really deferred anymore. It's important to report errors to the # user, and that means doing this before OutputPage::output(). Note that for page saves, -- 2.20.1